package hu.crs.game.statespace;

import hu.crs.coordinate.Coordinate;
import hu.crs.game.entity.Entity;
import hu.crs.game.state.StateHolder;

public class GameMap implements StateHolder {
	/**
	 * 
	 */
	private static final long serialVersionUID = 7558697690139657952L;
	// private char[][] map = new char[80][24];
	private MapElement[][] map = new MapElement[80][24];

	public MapElement get(int x, int y) {
		return map[x][y];
	}

	public void set(int x, int y, MapElement e) {
		map[x][y] = e;
	}

	public String getMapString() {
		StringBuilder sb = new StringBuilder();
		for (int j = 0; j < 24; j++) {
			for (int i = 0; i < 80; i++) {
				sb.append(map[i][j].getMapElementChar());
			}
			sb.append("\n");
		}
		return sb.toString();
	}

	public MapElement get(Coordinate co) {
		return get(co.getX(), co.getY());
	}

	public void set(Coordinate co, MapElement e) {
		set(co.getX(), co.getY(), e);
	}
	
	public void add(int x, int y, Entity e) {
		map[x][y].getEntities().add(e);
	}
	
	public void add(Coordinate c, Entity e) {
		map[c.getX()][c.getY()].getEntities().add(e);
	}
}
